﻿#ifndef TEST_H
#define TEST_H
#include <string>
#include <vector>

namespace tt { // 第一批
void LinkCAD();

void CreatePoint(std::string const &ptStr); // 创建点
void CvCv_IntersectPoint(std::vector<std::string> const &cvIds);
// 镜像创建面
void CreateMirrorSurface(const std::vector<std::string> &sParam);
// 通过投影创建投影曲线
void CreateCurveByProjection(const std::vector<std::string> &sParam);
// 样条曲线
void Vf_CreateSplineCurve(const std::vector<std::string> &sParam);
// 曲线在曲面上偏置
void Vf_CreateOffsetCurve(std::vector<std::string> const &eleIds);
void Vf_CreateCurveSurfaceIntersection(std::vector<std::string> const &eleIds);
// 曲面沿法向偏置
void Vf_OffsetSurface(std::vector<std::string> const &vParams);
void S2S_IntersectCurve(std::vector<long> const &faceIds);
void TestGetEntityType(std::string entId);

void TestSelMul(int typeIdx);
void TestSelectInteractive(int typeIdx);
void TestIntersect_S2S(std::vector<std::string> const &surfIds);
void TestSelByTag(std::string entId);
void TestClearSelection();

// 第二批
// 边界填充曲面
void CreateSurfaceByFill(const std::vector<std::string> &sParam);

// 曲面上两点创建曲线
void CreateCurveOnSurfaceByTwoPoints(const std::string &sParam);
// 镜像创建曲线
void CreateMirrorCurve(const std::vector<std::string> &sParam);
// 通过曲面加厚创建体
void CreateBodyWithThickedSurface(const std::vector<std::string> &sParam);
// 计算曲面的周长和面积
void CalSurfaceAreaAndPerimeter(const std::string &sParam);

// 多曲线创建截面
void CreateSurfaceByLoft(const std::vector<std::string> &sParam);
// 测试计算曲面重量
void CalSurfaceMass(std::vector<std::string> const &sParam);
//  创建复合曲线
void CreateSurfaceMerge(const std::vector<std::string> &vParam);
// 测试计算曲面重心
void CalcSurfGravity(std::string const &faceId);
// 测试点是否在曲线上
void TestPointOnCurve(std::vector<std::string> const &);
// 测试点是否在曲面上
void TestPointOnSurface(std::vector<std::string> const &);
void TestPointOnSurface2(std::vector<std::string> const &);

// 第三批
void TestMousePtOnSurface(std::string surfId);
void TestMirrorObject(std::vector<std::string> const &ids);
void TestCreateComponentCv(std::vector<std::string> ids);
void TestCurveTrim(std::vector<std::string> const &ids);
void TestCtPtByU(std::string const &arg);
void TestCtPtByUV(std::string const &arg);
void TestCtFuncCurve(std::string const &arg);
void TestChWidClr(std::string const &cvId);
void TestRestoreWidClr(std::string const &cvId);
void TestCtCoordSysById(std::string const &arg);
void TestRemoveObj(std::string const &objId);

// 第三批增加的4个接口
void TestBatchChClrWid(std::string const &arg);
void TestBatchClearClrWid(std::string const &arg);
void TestCreateCoord(std::string const &arg);
void TestSelectionToID(std::string const &arg);
void TestSectionToId(std::string const &arg);

// 2025.01.19新增的接口
void TestvfCurveLength(std::string const &cvId);
void TestvfCreatePointByProjection(std::vector<std::string> const &idArr);
void TestvfCreatPointByGeodesicDis(std::string const &arg);

void TestTangentOnCurve(std::string const &arg);
void TestHilitPointSet(std::string const &arg);
void TestClearHilitPointSet(std::string const &arg);
void TestAddComment(std::string const &id);
void TestDelComment(std::string const &id);
void TestSectionIdToMore(std::string const &arg);

void TestvfCreatPointByGeodesicDis(std::string const &arg);
void TestGeodesicDisPoint(std::string const &arg);
void TestGeodesicDis(std::string const &arg);
void TestIntersetCurves(std::string const &arg);
void TestIsPointInProjectRange(std::string const &arg);
void TestFindLoopAndFace(std::string const &arg);
void TestDelLoopFace(std::string const &loopId);
void TestSplitCurve(std::string const &arg);
void TestCreatePointNormal(std::vector<std::string> const &parmArr);
void TestDeletePointNormal(std::vector<std::string> const &parmArr);

void TestClearPersistData();

// 4月8号批测试函数
void TestActiveDocName();
void TestDismantleCurve(std::string cvId);
void TestCvStEn(std::string cvId);
void TestEqDisPtsOnCv(std::vector<std::string> cvId);
void TestMinDisPtToSurface(std::vector<std::string> args);
void TestCreateSpl2d();
void TestGetPointCoord(std::string const &ptId);
void TestCreateLineByPtStEn(std::vector<std::string> const &args);
void TestCreateLineByPtDir(std::vector<std::string> const &args);

// 2025.05.16 测试函数
// 批量删除实体(点线 面 体 混合)
void TestBatchDelEntites(std::vector<std::string> const &entIds);

// 测试批量高亮面
void TestHilitSurfSet(std::vector<std::string> const &faceIds);
void TestClrHilitSurfSet(std::vector<std::string> const &faceIds);

// 测试批量延申或修剪直线
void TestTriOfExEndPt(std::vector<std::string> const &args);

// 测试使用两个点来创建测地线
void TestCtGeodCvByTwoPt(std::vector<std::string> const &ptIds);
void TestBatchOfCvOnSurf(std::vector<std::string> const &args);

void TestSaveDataToDoc(std::string path);
void TestRetriveDataToDB(std::string path);

// 7月4号批
void TestCreatGeodesicCurvebyPoint(std::vector<std::string> const &args);
void TestGetBoundaryIDbyDivide(std::vector<std::string> const &args);
void TestSaveasStp();
void TestGetBoundaryIDbyPoint(std::vector<std::string> const &args);
void TestCreateSlitDart(std::vector<std::string> const &args);
void TestCreateVShapeDart(std::vector<std::string> const &args);

// 测试三维截面功能
void Test3dSection();

void TestChangeLinesColorAndWidth(std::vector<std::string> const &args);
void TestGetLinesColorAndWidth(std::vector<std::string> const &args);
void TestJoin(std::vector<std::string> const &args);

// 9.10号批
void TestPickPointCoord(std::vector<std::string> const &args);

// 10.14号批
void CreateNewDartBoundary(std::vector<std::string> const &args);
void TestCurveOnSurface(std::vector<std::string> const &args);
void CreateSpliteCurve(std::vector<std::string> const &args);
void TestTypeOfSurfaceAndGetGeneratrixVector(
    std::vector<std::string> const &args);

void TestMBD();
}; // namespace tt

#endif